package com.todo.strategy.offline.infrastructure.repository;

import com.todo.common.common.entity.response.page.PageResult;
import com.todo.strategy.common.enums.StrategyStatusEnum;
import com.todo.strategy.offline.infrastructure.entity.condition.PlatformStrategyCondition;
import com.todo.strategy.offline.infrastructure.entity.domain.PlatformStrategyDO;
import com.todo.strategy.offline.infrastructure.entity.po.PlatformStrategyDetailPO;
import com.todo.strategy.offline.infrastructure.entity.po.PlatformStrategyPO;

import java.util.List;

/**
 * (PlatformStrategy)表服务接口
 *
 * @author zhangwenxiang
 * @since 2024-03-04 21:10:04
 */
public interface PlatformStrategyRepository {

    /**
     * 新增平台攻略信息
     *
     * @param platformStrategyPO
     * @return
     */
    Boolean insertPlatformStrategyInfo(PlatformStrategyPO platformStrategyPO);

    /**
     * 新增平台攻略详情
     *
     * @param platformStrategyDetailPO
     * @return
     */
    Boolean insertPlatformStrategyDetail(PlatformStrategyDetailPO platformStrategyDetailPO);

    /**
     * 根据主键id更新平台攻略信息
     *
     * @param platformStrategyPO
     * @return
     */
    Boolean updatePlatformStrategyInfo(PlatformStrategyPO platformStrategyPO);

    /**
     * 根据主键更新平台攻略详情
     *
     * @param platformStrategyDetailPO
     * @return
     */
    Boolean updatePlatformStrategyDetail(PlatformStrategyDetailPO platformStrategyDetailPO);

    /**
     * 根据主键id删除平台攻略信息
     *
     * @param id
     * @return
     */
    Boolean removePlatformStrategyById(Long id);

    /**
     * 根据主键id查询平台攻略信息
     *
     * @param id
     * @return
     */
    PlatformStrategyDO queryPlatformStrategyById(Long id);

    /**
     * 根据主键id查询平台攻略基础信息
     *
     * @param id
     * @return
     */
    PlatformStrategyPO queryBasePlatformStrategyById(Long id);

    /**
     * 根据主键id查询平台攻略基础详情
     *
     * @param id
     * @return
     */
    PlatformStrategyDetailPO queryPlatformStrategyDetailById(Long id);

    /**
     * 多条件查询平台攻略信息
     *
     * @param platformStrategyCondition
     * @return
     */
    PageResult<PlatformStrategyPO> queryPlatformStrategyPOByCondition(PlatformStrategyCondition platformStrategyCondition);

    /**
     * 多条件查询平台攻略信息数量
     *
     * @param platformStrategyCondition
     * @return
     */
    Long queryCountByCondition(PlatformStrategyCondition platformStrategyCondition);

    /**
     * 根据主键id集合查询平台攻略信息
     *
     * @param strategyIdList
     * @return
     */
    List<PlatformStrategyPO> queryPlatformStrategyByIdList(List<Long> strategyIdList);

    /**
     * 更新平台攻略状态
     *
     * @param strategyId
     * @param statusEnum
     * @return
     */
    Boolean updatePlatformStrategyStatus(Long strategyId, StrategyStatusEnum statusEnum);
}
